/* -*-jde-*- */
package app.htmlGenerator;

import app.conexion.ConexionException;
import app.conexion.Conexion;
import app.empresa.Empresa;
import app.empresa.Vacante;
import app.usuario.Direcciones;
import app.usuario.beans.Direccion;
import app.util.appException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * HTMLVacanteGenerator Generador de Vacantes para desplegarse como contenido
 * HTML en la página web.
 *
 * @author Victor Miguel Peralta Santa Anna
 * @since Enero 2012
 * @version 0.1
 */
public class HTMLVacanteGenerator {

    private Empresa empresa;
    private Vacante vacante;
    private LinkedList<Direccion> direcciones;

    /**
     * Generador de Vacante en formato desplegable HTML. Es necesario que los
     * paraámetros esten completos.
     *
     * @param empresa
     * @param vacante
     * @param direcciones
     */
    public HTMLVacanteGenerator(Vacante vacante) throws appException {

        Empresa e = new Empresa(vacante.getnIdUsuario());

        this.empresa = e;
        this.vacante = vacante;

        Direcciones d = new Direcciones(vacante.getnIdUsuario());
        LinkedList<Direccion> dirs = d.getDirecciones();

        this.direcciones = dirs;
    }

    /**
     * Genera un texto html con la información necesaria de una Vacante, de modo
     * que pueda ser utilizada para crear una vista web
     *
     * @return El texto html
     */
    public String generarVacante() {

        String direcciones_str = "";

        for (Direccion dir : direcciones) {
            direcciones_str += "<br>" + dir.getsCalle() + " " + dir.getsNumeroExterior() + " "
                    + dir.getsNumeroInterior() + " Col. " + dir.getsColonia()
                    + " Del." + dir.getsDelegacion() + " . " + dir.getsCiudad();
            System.out.println(direcciones_str);
        }

        String contenido = "";
        //String contenido += "<html><head></head><body>";
        //contenido += "<title>Vacante generada</title>";
        contenido += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">";

        // La parte superior del contenido
        contenido += "<h3 align=right> " + empresa.getsNombre() + " </h3> "
                + "<p align=right> <i>"
                + empresa.getsRFC() + "</i><br><b>"
                + empresa.getsWeb() + "</b>"
                + direcciones_str
                + "<br></p>"
                + "<hr width=50% align=right>"
                + "<p align=right><i>" + empresa.getsDescripcion() + "</i></p>"
                + "<hr width=50% align=right>"
                + "<p align=right><b>Responsable: </b>" + empresa.getsNombreContactoEmpresa() + "<br>"
                //+ "<b>Contacto:</b> " + empresa.getsCorreo() + "<br>"
                //+ empresa.getsTelefono() + "<br>"
                + " </p> <hr>";

        // La parte inferior del contenido

        contenido += "<p align=left>"
                + "<b>Fecha de publicación: </b>" + vacante.getdFechaPublicacion().toString() + "<br></p>";

        contenido += "<h3>" + vacante.getsTituloVacante() + "</h3>";
        contenido += "<p align=left>"
                + "<hr width=50% align=left>"
                + "<b>Descripción: </b><br><br>"
                + vacante.getsDescripcion()
                + "<br>"
                + "<hr width=50% align=left>";

        contenido += "<b>Información de la vacante:</b><br><br>"
                + vacante.getsInformacion();

        contenido += "<hr width=25% align=left>";

        contenido += "<b>Profesionales buscados:</b><br><br>"
                + vacante.getsProfesionalesBuscados();

        contenido += "<hr width=25% align=left>";

        contenido += "<b>Requisitos: </b><br><br>"
                + vacante.getsRequisitos();

        contenido += "<hr width=25% align=left>";

        String beca = (vacante.isBeca()) ? ("<br>La vacante ofrece una <b>beca</b> a los candidatos") : "";
        String pprof = (vacante.isPracticasProfesionales()) ? ("<br>La vacante ofrece la opción de <b>prácticas profesionales</b> a los candidatos") : "";

        contenido += "<b>Se ofrece:</b><br><br><i>"
                + vacante.getsOfrecen() + "</i><br>"
                + beca
                + pprof;

        contenido += "<hr width=25% align=left>";

        contenido += "<b>Contacto para la vacante:</b><br><br>"
                + "<b>Responsable:</b> " + vacante.getsNombreCompletoContacto()
                + "<br><b>Contacto:</b> " + vacante.getsCorreo() + " | " + vacante.getsTelefono();

        contenido += "<hr width=25% align=left>";


        //contenido += "</body></html>";
        //writeFile("vacante.html",contenido,false);
        return contenido;
    }

    @Override
    public String toString() {
        return "HTMLVacanteGenerator{" + "empresa=" + empresa + ", Vacante=" + vacante + '}';
    }

    /**
     * Metodo para escritura de un archivo y probar la correcta salida del texto
     * html
     *
     * @param archivo archivo que se va a escribir
     * @param contenido la cadena que quedaran en el archivo
     * @param append el bit que dirá si se anexa el contenido o se empieza de
     * cero
     */
    private void writeFile(String archivo, String contenido, boolean append) {
        FileWriter file = null;
        try {
            file = new FileWriter(archivo, append);
            file.write(contenido);
        } //writeFile
        catch (IOException ex) {
            Logger.getLogger(HTMLVacanteGenerator.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                file.close();
            } catch (IOException ex) {
                Logger.getLogger(HTMLVacanteGenerator.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }//writeFile

    /**
     * Pruebas con la base de datos y un achivo generado
     *
     * @param args
     * @throws appException
     * @throws ConexionException
     */
    public static void main(String args[]) throws appException, ConexionException {


        Vacante v = new Vacante(1);

        HTMLVacanteGenerator htmlvg = new HTMLVacanteGenerator(v);

        System.out.println(htmlvg);

        System.out.println(
                htmlvg.generarVacante());

    }
}
